#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <gtk/gtk.h>
#include "intestazioni_giornate.h"
#include"Intestazioni_giocatore.h"

using namespace std ;

void aggiorna_schermata();
void aggiorna_schermata2();
void reverse(char *s);
char *itoa(int n, char *s);

giocatore *vetore_indirizzi[18];

void salva_nel_file();

extern GtkBuilder *builder;
extern giornate *puntatore1;
extern giocatore *puntatore2;
extern partite *puntatore3;
extern giocatore *punta_gioc_att;
extern giornate *punta_att;
extern pres_allenamento *punt_pres_allenam;
extern int stampa;
extern partite *punta_att_partite;
extern int partite_allenamenti;

extern int schermata;

extern char nomi_squadre[][30];  
extern int lunghezz_nomi_sq[];  
extern int lunghezza_mese[];   
extern int lunghezza_gio_settimana[];  

extern float colori_per_locandina[];
extern float r,g,b;
extern int colore_chiaro_scuro[];

void aggiona_1_label(char stringa[],char label[])
{
    ostringstream oss;
    GtkLabel *label_generale= GTK_LABEL(gtk_builder_get_object(builder,label));
    
    oss.str("") ; oss.clear() ;
    oss<<stringa;
    
    gtk_label_set_text(label_generale, oss.str().c_str());
}

giocatore *vet_punt[18];

char stringa_numero[]="0123456789";

int pos=0;

int  converti_int_stringa(int i,int cont)
{         
      if(i>0)
         {
          return converti_int_stringa(i/10,cont+1);
         }
      else
          return cont;   
}

void funzione_di_stampa(int numero,int x,int y,cairo_t  * cr,float r,float g,float b)
{
   
   if(numero==100)
      {cairo_set_source_rgb (cr,r,g,b);
       char stringa_disegno[]="100";
       cairo_move_to(cr,x-3,y);
       cairo_show_text(cr,stringa_disegno);
        cairo_set_source_rgb (cr,r,g,b);
      }
   else{
         int i;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
         i=converti_int_stringa(numero,0);
         int dec=i-1,num=numero,var,j,a;
         char stringa_disegno[i+1];
         stringa_disegno[i]='\0';
         i--;
         for(j=i;j>-1;j--)
            { 
              var=num%10;
              num=num/10; 
              stringa_disegno[j]=stringa_numero[var];
            }
    
          cairo_set_source_rgb (cr,r,g,b);
          j=0;
          int numers=numero/10;
         if(numers==0)
             cairo_move_to(cr,x+3,y);
         else
             cairo_move_to(cr,x,y);    
         cairo_show_text(cr,stringa_disegno); 
         }
}

void funzione_di_stampa_float(float numero,int x,int y,cairo_t  * cr,float r,float g,float b)
{
         int int_sinistra=numero;
  
         float var;
         var=numero-int_sinistra;
         
         int int_destra=var*10;
               
         char stringa_disegno[4];
               
         stringa_disegno[0]=stringa_numero[int_sinistra];
         
         stringa_disegno[1]=',';
         
         stringa_disegno[2]=stringa_numero[int_destra];;
         
         stringa_disegno[3]='\0';
         
          cairo_set_source_rgb (cr,r,g,b);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,stringa_disegno);          
}


void crea_giornata(giornate *p)
{
  giornate *q=puntatore1;
  giornate *prec;
  char mesi[][20]={"Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"};
  int vet_mex[2];


  for(int i=0;i<12;i++)
         {if(strcmp(p->mese_parola,mesi[i])==0)
              {vet_mex[0]=i;
              break;}
         }
  
  while(q!=0)
           {
               for(int i=0;i<12;i++)
                   {if(strcmp(q->mese_parola,mesi[i])==0)
                        {vet_mex[1]=i;
                          break;}
                        }

             if((p->anno<q->anno)||(p->anno==q->anno&&vet_mex[0]<vet_mex[1])||(p->anno==q->anno&&vet_mex[0]==vet_mex[1]&&p->giorno<q->giorno))
                  break;

            prec=q;
            q=q->pross;
           }  

    if(puntatore1==0)
     {
       puntatore1=p;
       punta_att=puntatore1; 
       p->precc=0;
     }
  else{
          if(q!=puntatore1)
              {prec->pross=p;
                p->precc=prec;}
          else
              {puntatore1=p;
               punta_att=puntatore1; 
               p->precc=0;
              }
          }
          
     p->pross=q;   
     
}

void crea_giornata_partite(partite *p)
{
  partite *q=puntatore3;
  partite *prec;
  char mesi[][20]={"Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"};
  int vet_mex[2];


  for(int i=0;i<12;i++)
         {if(strcmp(p->mese_parola,mesi[i])==0)
              {vet_mex[0]=i;
              break;}
         }
  
  while(q!=0)
           {
               for(int i=0;i<12;i++)
                   {if(strcmp(q->mese_parola,mesi[i])==0)
                        {vet_mex[1]=i;
                          break;}
                        }

             if((p->anno<q->anno)||(p->anno==q->anno&&vet_mex[0]<vet_mex[1])||(p->anno==q->anno&&vet_mex[0]==vet_mex[1]&&p->giorno<q->giorno))
                  break;

            prec=q;
            q=q->pross;
           }  

    if(puntatore3==0)
     {
       puntatore3=p;
       punta_att_partite=puntatore3; 
       p->precc=0;
     }
  else{
          if(q!=puntatore3)
              {prec->pross=p;
                p->precc=prec;}
          else
              {puntatore3=p;
               punta_att_partite=puntatore3; 
               p->precc=0;
              }
          }
          
     p->pross=q;    
}


void crea_giocatore(giocatore *p)
{
  giocatore *q= puntatore2;
  giocatore *prec;

  cout<<endl<<" p= "<<p<<endl;

    while(q!=0)
           {if(strcmp(p->cognome,q->cognome)<0||(strcmp(p->cognome,q->cognome)==0&&strcmp(p->nome,q->nome)<0))
                break;

            prec=q;
            q=q->pross;}

  if(puntatore2==0)
     {
       puntatore2=p;
       punta_gioc_att=puntatore2; 
       p->precc=0;
     }
  else{
          if(q!=puntatore2)
              {prec->pross=p;
                p->precc=prec;}
          else
              {puntatore2=p;
               punta_gioc_att=puntatore2; 
               p->precc=0;
              }
          }
          
     p->pross=q;   
  
}

void aggiorna_schermata(cairo_t  * cr)
{

   giornate *p=puntatore1;

    cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Georgia",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   int x=10,y=30,inc=1;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N°");   
          x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Day");
         x=x+50;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Mese");
         x=x+150;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Anno");
         x=10;
         y=y+40;
   
   char s[33];
   
   while(p!=0)
        {
         funzione_di_stampa(inc,x,y,cr,0.0,0.0,0.0);
         x=x+70;
         funzione_di_stampa(p->giorno,x,y,cr,0.0,0.0,0.0);
         x=x+50;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->mese_parola);
         x=x+150;
         funzione_di_stampa(p->anno,x,y,cr,0.0,0.0,0.0);
         x=10;
         y=y+25;
         p=p->pross;
         inc++;
        } 
          
}

void aggiorna_schermata_partite(cairo_t  * cr)
{

   partite *p=puntatore3;

    cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Georgia",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   int x=10,y=30,inc=1;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N°");   
          x=x+40;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Giornata");
         x=x+40;
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Squadra");
         x=x+300;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Palestra");
         x=10;
         y=y+40;
   
   char s[33];
   
   int cont_colori=0;
   while(p!=0)
        {
         funzione_di_stampa(inc,x,y,cr,0.0,0.0,0.0);
         x=x+40;
         funzione_di_stampa(p->giorno,x,y,cr,0.0,0.0,0.0);
         x=x+40;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->mese_parola);
         x=x+130;
         funzione_di_stampa(p->anno,x,y,cr,0.0,0.0,0.0);
         x=x+70;
         
         r=colori_per_locandina[cont_colori];
         g=colori_per_locandina[cont_colori+1];
         b=colori_per_locandina[cont_colori+2];
         
         cairo_set_source_rgb (cr, r,g, b);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->squadra);
         x=x+300;
         
         if(strcmp(p->palestra,"GuidoFassi")==0)
             cairo_set_source_rgb (cr, 0.0,0.0, 0.999);
         else
             cairo_set_source_rgb (cr, 0.0,0.999,0.0);    
             
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->palestra);
         x=10;
         y=y+25;
         
         if(inc<13)
             cont_colori+=3;
         else
             cont_colori=0;
                
         p=p->pross;
         inc++;
        } 
          
}


void aggiorna_label()
{


    if(partite_allenamenti==0)
       {GtkLabel *label_giornate = GTK_LABEL(gtk_builder_get_object(builder, "label1")) ;
        giornate *p=punta_att;
        ostringstream oss ;
        oss.str("") ; oss.clear() ;
        oss<<"Allenamento "<<p->giono_settimana<<" "<<p->giorno<<" "<<p->mese_parola<<" "<<p->anno;
        gtk_label_set_text(label_giornate, oss.str().c_str());  
       }

}

void aggiorna_label_parite()
{
       GtkLabel *label_giornate = GTK_LABEL(gtk_builder_get_object(builder, "label1")) ;
        partite*p=punta_att_partite;
        ostringstream oss ;
        oss.str("") ; oss.clear() ;
        oss<<p->giorno<<" "<<p->giono_settimana<<" "<<p->mese_parola<<" "<<p->anno;
        gtk_label_set_text(label_giornate, oss.str().c_str());      
       
}



void aggiorna_schermata1(cairo_t  * cr)
{   
    giocatore *p=puntatore2;

     
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Georgia",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   int x=10,y=30,inc=1;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N°");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+170;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+170;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Ruolo");
         x=10;
         y=y+40;
   
   char s[33];
   
   while(p!=0)
        {
         funzione_di_stampa(inc,x,y,cr,0.0,0.0,0.0);
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+170;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+170;
         
         if(strcmp(p->ruolo,"Portiere")==0)           
             cairo_set_source_rgb (cr, 0.999,0.999, 0.0);
             
         if(strcmp(p->ruolo,"Attacante")==0)           
             cairo_set_source_rgb (cr, 0.999,0.0, 0.0);
             
         if(strcmp(p->ruolo,"Difensore")==0)           
             cairo_set_source_rgb (cr, 0.0,0.999, 0.0);
             
         if(strcmp(p->ruolo,"Allenatore")==0)           
             cairo_set_source_rgb (cr, 0.0,0.0, 0.999);           
             
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->ruolo);
         x=x+150;
         cairo_move_to(cr,x,y);
         if(p->rosa)
            {cairo_set_source_rgb (cr, 0.99,0.420, 0.720);
             cairo_show_text(cr,"Rosa");}
         else
           {cairo_set_source_rgb (cr, 0.99,0.0, 0.0);
            cairo_show_text(cr,"fuori Rosa");} 
         x=10;
         y=y+25;
         p=p->pross;
         inc++;
        } 
    
}


void aggiorna_schermata2(cairo_t  * cr)
{
    giocatore *p=puntatore2;
     

   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   int x=80,y=30,inc=0;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+150;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Pres");
         x=10;
         y=y+40;
   
   char s[33];
   
   if(partite_allenamenti==0)
     {while(p!=0)
        {
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
  
         x=x+70;
       
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+150;
         
         cairo_move_to(cr,x,y);
         if(punta_att->bottoni_selezioni[inc])
            {cairo_set_source_rgb (cr, 0.0,0.99, 0.0);
            cairo_show_text(cr,"Si");}
         else
           {cairo_set_source_rgb (cr, 0.99,0.0, 0.0);
            cairo_show_text(cr,"No");}
            
         x=10;  
         y=y+25;
         p=p->pross;
         inc++;
        } 
     }   
    else
      {while(p!=0)
        {
        if(p->rosa)
         {cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
  
         x=x+70;
       
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+150;
         
         cairo_move_to(cr,x,y);
         if(punta_att_partite->pres_partite[inc])
            {cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
            cairo_show_text(cr,"Si");}
         else
           {cairo_set_source_rgb (cr, 0.99,0.0, 0.0);
            cairo_show_text(cr,"No");}
            
         x=10;  
         y=y+25;
         inc++;
        }  
        p=p->pross; 
       } 
      }   
}

void salva_immagine_pres_allenamento(cairo_t  * cr)
{

  giocatore *vetore_indirizzi[18];
  
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
      cairo_surface_t *surface;   
   surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 600, 680);
   cr= cairo_create(surface);
    
   cairo_scale(cr,2,2);
   
   
   int tot_giornate=0;
   giornate *q=puntatore1;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   
   int x=10,y=20,inc=0;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Classifica Presenze Negli Allenamneti");
   
         x=10;  
         y=y+25;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+70;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Presenze");
         x=x+60;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Punteggio");
         x=10;
         y=y+20;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i;   
while(vet_punt[inc]!=0)
        {
         p=vet_punt[inc];
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
         i=converti_int_stringa(inc+1,0);
         int dec=i-1,num=inc+1,var,j,a;
         char stringa_disegno[i+1];
         stringa_disegno[i]='\0';
         i--;
         for(j=i;j>-1;j--)
            { 
              var=num%10;
              num=num/10;
              stringa_disegno[j]=stringa_numero[var];
            }

         cairo_move_to(cr,x,y);
         cairo_show_text(cr,stringa_disegno);
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+80;
        
        funzione_di_stampa(p->punti_allenam->num_allenamenti,x,y,cr,0.0,0.0,0.0);
        x=x+14;
        cairo_move_to(cr,x,y);
        cairo_show_text(cr,"/");
        x=x+4;
        funzione_di_stampa(tot_giornate,x,y,cr,0.0,0.0,0.0);
        x=x+50;
          
          
        if(p->punti_allenam->punteggio<60.00)
                {r=0.99;
                 g=0.00;
                 b=0.00;    
                 funzione_di_stampa(p->punti_allenam->punteggio,x,y,cr,r,g,b);  
                 }
        else    
         {if(p->punti_allenam->punteggio>59.00&&p->punti_allenam->punteggio<100.00) 
                  {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->punti_allenam->punteggio,x,y,cr,r,g,b);  
                 }
          else  
              { if(p->punti_allenam->punteggio==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->punti_allenam->punteggio,x,y,cr,r,g,b);  
                 }
              }       
          }
                        
         x=10;  
         y=y+15;
         inc++;
        } 
              time_t rawtime;
   struct tm * timeptr;

    time ( &rawtime );
    timeptr = localtime ( &rawtime );

    char wday_name[][15] = {"Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato"};
    char mon_name[][15] = {"Gennaio", "Febbreio", "Marzo", "Aprile", "Maggio", "Giugno","Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" };
        
  char max_stringa[100];
  
  char stringa[10];
  int intero;

  strcpy(max_stringa,"classifiche/presenze_allenamenti/");
  strcat(max_stringa,wday_name[timeptr->tm_wday]); 
  intero=timeptr->tm_mday;
  itoa(intero,stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,mon_name[timeptr->tm_mon]);
  itoa(1900 + timeptr->tm_year, stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,"Classifica_Presenze_Allenamenti");
  strcat(max_stringa,".png");       
        
  cairo_surface_write_to_png(surface,max_stringa);       
           
}

void stampa_punt_max(cairo_t  * cr)
{

  giocatore *vetore_indirizzi[18];
  
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
    
  
   int tot_giornate=0;
   giornate *q=puntatore1;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   
   int x=10,y=30,inc=0;
   
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+150;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Presenze");
         x=10;
         y=y+40;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i;   
while(vet_punt[inc]!=0)
        {

         p=vet_punt[inc];
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
         i=converti_int_stringa(inc+1,0);
         int dec=i-1,num=inc+1,var,j,a;
         char stringa_disegno[i+1];
         stringa_disegno[i]='\0';
         i--;
         for(j=i;j>-1;j--)
            { 
              var=num%10;
              num=num/10;
              stringa_disegno[j]=stringa_numero[var];
            }

         cairo_move_to(cr,x,y);
         cairo_show_text(cr,stringa_disegno);
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+170;
        
        funzione_di_stampa(p->punti_allenam->num_allenamenti,x,y,cr,0.0,0.0,0.0);
        x=x+30;
        cairo_move_to(cr,x,y);
        cairo_show_text(cr,"/");
        x=x+10;
        funzione_di_stampa(tot_giornate,x,y,cr,0.0,0.0,0.0);
        x=x+70;
          
          
        if(p->punti_allenam->punteggio<60.00)
                {r=0.99;
                 g=0.00;
                 b=0.00;    
                 funzione_di_stampa(p->punti_allenam->punteggio,x,y,cr,r,g,b);  
                 }
        else    
         {if(p->punti_allenam->punteggio>59.00&&p->punti_allenam->punteggio<100.00) 
                  {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->punti_allenam->punteggio,x,y,cr,r,g,b);  
                 }
          else  
              { if(p->punti_allenam->punteggio==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->punti_allenam->punteggio,x,y,cr,r,g,b);  
                 }
              }       
          }
                        
         x=10;  
         y=y+25;
         inc++;
        } 
        
     salva_immagine_pres_allenamento(cr);   
}

int controlla_prec(giocatore *vet_punti[],int i,giocatore *p)
{
   if(i<0)
      return 1;
  
   if(vet_punti[i]!=p)
      return controlla_prec(vet_punti,i-1,p);
   else
      return 0;
}


void crea_lista_classifica()
{
  int cont=1,i=0;
  giocatore *p=puntatore2;
  giocatore *q;

   while(p!=0)
            {
             cont++;
             p=p->pross;
            }

    while(i<cont)
    { p=puntatore2;
      while(p!=0)
               {if(controlla_prec(vet_punt,i-1,p))
                   { vet_punt[i]=p;
                    break;}
                 else
                    p=p->pross;
               }
               
  while(p!=0)
           { q=vet_punt[i];
             if(p->punti_allenam->punteggio>q->punti_allenam->punteggio&&controlla_prec(vet_punt,i-1,p))
                vet_punt[i]=p;
             p=p->pross;
             }     
       i++;
    }
            
   
    for(int j=i;j<18;j++)
          vet_punt[i]=0;      
          
   stampa=2;
  GtkWidget *finestra=GTK_WIDGET(gtk_builder_get_object(builder,"drawingarea36") );
  gtk_widget_queue_draw (finestra);                  

} 

//------------------------------------------------------------------------------------------------
//                                           SALVA SU IMMAGINI
//------------------------------------------------------------------------------------------------

void salva_su_immagine_pres_partite(cairo_t  *cr,giocatore *vet_punt_partite[], int cont)
{

   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
  
     cairo_surface_t *surface;   
     surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 600, 600);
    cr= cairo_create(surface);
    
   cairo_scale(cr,2,2);
   
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=15,inc=0;
   
            cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Classifica Presenze Nelle Partite");
   
         x=10;  
         y=y+25;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+70;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Presenze");
         x=x+60;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Punteggio");
         x=10;
         y=y+20;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i;   
while(inc<cont)
        {
         p=vet_punt_partite[inc];  

         if(p->rosa==1)
         {
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
         
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         
         x=x+80;
        
        funzione_di_stampa(p->point_partite->num_partite,x,y,cr,0.0,0.0,0.0);
        x=x+14;
        cairo_move_to(cr,x,y);
        cairo_show_text(cr,"/");
        x=x+4;
        funzione_di_stampa(tot_giornate,x,y,cr,0.0,0.0,0.0);
        x=x+50;
          
          
        if(p->point_partite->punt_partite<60.00)
           {r=0.99;
            g=0.00;
            b=0.00;    
            funzione_di_stampa(p->point_partite->punt_partite,x,y,cr,r,g,b);  
           }
        else    
         {if(p->point_partite->punt_partite>59.00&&p->point_partite->punt_partite<100.00) 
                {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->point_partite->punt_partite,x,y,cr,r,g,b);  
                 }
          else  
              {if(p->point_partite->punt_partite==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->point_partite->punt_partite,x,y,cr,r,g,b);  
                 }
              }       
          }
                        
         x=10;  
         y=y+15;
         }
         inc++;
        } 
        
           time_t rawtime;
   struct tm * timeptr;

    time ( &rawtime );
    timeptr = localtime ( &rawtime );

    char wday_name[][15] = {"Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato"};
    char mon_name[][15] = {"Gennaio", "Febbreio", "Marzo", "Aprile", "Maggio", "Giugno","Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" };
        
  char max_stringa[100];
  
  char stringa[10];
  int intero;

  strcpy(max_stringa,"classifiche/presenze_partite/");
  strcat(max_stringa,wday_name[timeptr->tm_wday]); 
  intero=timeptr->tm_mday;
  itoa(intero,stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,mon_name[timeptr->tm_mon]);
  itoa(1900 + timeptr->tm_year, stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,"Classifica_Presenze_Partite");
  strcat(max_stringa,".png");       
        
  cairo_surface_write_to_png(surface,max_stringa);    
                                     
                      
}

void salva_immagine_gol(cairo_t  *cr,giocatore *vet_punt_partite[],int cont)
{
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
  cairo_surface_t *surface;   
  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 600, 600);
  cr= cairo_create(surface);
    
   cairo_scale(cr,2,2);
   
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=20,inc=0;
   
            cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Classifica Marcatori");
   
         x=10;  
         y=y+25;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+110;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Reti");
         x=10;
         y=y+20;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i,pos=1;   
while(inc<cont)
        {
         p=vet_punt_partite[inc];  
         if(p->rosa==1&&strcmp(p->ruolo,"Allenatore")!=0)
         {
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(pos,x,y,cr,0.0,0.0,0.0);
         
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+115;
        
       if(p->point_partite->gol==0)
          { cairo_set_source_rgb (cr, 0.0,0.0,0.99);
            cairo_move_to(cr,x+3,y);
            cairo_show_text(cr,"0");
          }
         else
           funzione_di_stampa(p->point_partite->gol,x,y,cr,0.0,0.0,0.99);
                        
         x=10;  
         y=y+15;
         pos++;
         }
         inc++;
        } 
        
   time_t rawtime;
   struct tm * timeptr;

    time ( &rawtime );
    timeptr = localtime ( &rawtime );

    char wday_name[][15] = {"Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato"};
    char mon_name[][15] = {"Gennaio", "Febbreio", "Marzo", "Aprile", "Maggio", "Giugno","Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" };
        
  char max_stringa[100];
  
  char stringa[10];
  int intero;

  strcpy(max_stringa,"classifiche/marcatori/");
  strcat(max_stringa,wday_name[timeptr->tm_wday]); 
  intero=timeptr->tm_mday;
  itoa(intero,stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,mon_name[timeptr->tm_mon]);
  itoa(1900 + timeptr->tm_year, stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,"Classifica_Marcatori");
  strcat(max_stringa,".png");       
        
  cairo_surface_write_to_png(surface,max_stringa);       
        
  
        
}

void salva_immagine_voti(cairo_t  *cr,giocatore *vet_punt_partite[], int cont)
{
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   cairo_surface_t *surface;   
   surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 600, 600);
   cr= cairo_create(surface);
    
   cairo_scale(cr,2,2);
    
   
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=20,inc=0;
   
            cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Classifica Media Dei Voti");
   
         x=10;  
         y=y+25;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+73;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Media");
         x=x+60;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Punteggio");
         x=10;
         y=y+20;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i;   
while(inc<cont)
        {
         p=vet_punt_partite[inc];  
 
         if(p->rosa==1)
         {
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
         
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+80;
        
       if(p->point_partite->media_voti<1)
          { cairo_set_source_rgb (cr, 0.0,0.0,0.99);
            cairo_move_to(cr,x+4,y);
            cairo_show_text(cr,"0");
          }
         else
             funzione_di_stampa_float(p->point_partite->media_voti,x,y,cr,0.0,0.0,0.99); 
             
        x=x+70;
          
        if(p->point_partite->punti_voti<10.0)
          { cairo_set_source_rgb (cr, 0.99,0.0,0.0);
            cairo_move_to(cr,x+3,y);
            cairo_show_text(cr,"0");
          }
         else 
        {if(p->point_partite->punti_voti<60.00)
           {r=0.99;
            g=0.00;
            b=0.00;    
            funzione_di_stampa(p->point_partite->punti_voti,x,y,cr,r,g,b);  
           }
        else    
         {if(p->point_partite->punti_voti>59.00&&p->point_partite->punti_voti<100.00) 
                {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->point_partite->punti_voti,x,y,cr,r,g,b);  
                 }
          else  
              {if(p->point_partite->punti_voti==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->point_partite->punti_voti,x,y,cr,r,g,b);  
                 }
              }       
          }}
                        
         x=10;  
         y=y+15;
         }
         inc++;
        } 
        
       time_t rawtime;
   struct tm * timeptr;

    time ( &rawtime );
    timeptr = localtime ( &rawtime );

    char wday_name[][15] = {"Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato"};
    char mon_name[][15] = {"Gennaio", "Febbreio", "Marzo", "Aprile", "Maggio", "Giugno","Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" };
        
  char max_stringa[100];
  
  char stringa[10];
  int intero;

  strcpy(max_stringa,"classifiche/media_voti/");
  strcat(max_stringa,wday_name[timeptr->tm_wday]); 
  intero=timeptr->tm_mday;
  itoa(intero,stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,mon_name[timeptr->tm_mon]);
  itoa(1900 + timeptr->tm_year, stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,"Classifica_Media_Voti");
  strcat(max_stringa,".png");       
        
  cairo_surface_write_to_png(surface,max_stringa);    
        
}

void salva_immagine_miglior_giocatore(cairo_t  *cr,giocatore *vet_punt_partite[], int cont)
{
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   cairo_surface_t *surface;   
   surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 600, 680);
   cr= cairo_create(surface);
    
   cairo_scale(cr,2,2);
   
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=20,inc=0;
   
   cairo_move_to(cr,x,y);
   cairo_show_text(cr,"Classifica Del Miglior Giocatore");
   
   y=y+25; 
    
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+115;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Punteggio");
         x=10;
         y=y+20;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i;   
while(inc<cont)
        {
         p=vet_punt_partite[inc];  
  
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
         
         x=x+20;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+135;
                
        if(p->punti_allenam->punt_miglior_giocator<60.00)
           {r=0.99;
            g=0.00;
            b=0.00;    
            funzione_di_stampa(p->punti_allenam->punt_miglior_giocator,x,y,cr,r,g,b);  
           }
        else    
         {if(p->punti_allenam->punt_miglior_giocator>59.00&&p->punti_allenam->punt_miglior_giocator<100.00) 
                {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->punti_allenam->punt_miglior_giocator,x,y,cr,r,g,b);  
                 }
          else  
              {if(p->punti_allenam->punt_miglior_giocator==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->punti_allenam->punt_miglior_giocator,x,y,cr,r,g,b);  
                 }
              }       
          }
                        
         x=10;  
         y=y+15;
         
         inc++;
        } 
        
      time_t rawtime;
   struct tm * timeptr;

    time ( &rawtime );
    timeptr = localtime ( &rawtime );

    char wday_name[][15] = {"Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato"};
    char mon_name[][15] = {"Gennaio", "Febbreio", "Marzo", "Aprile", "Maggio", "Giugno","Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" };
        
  char max_stringa[100];
  
  char stringa[10];
  int intero;

  strcpy(max_stringa,"classifiche/migliore_giocatore/");
  strcat(max_stringa,wday_name[timeptr->tm_wday]); 
  intero=timeptr->tm_mday;
  itoa(intero,stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,mon_name[timeptr->tm_mon]);
  itoa(1900 + timeptr->tm_year, stringa); 
  strcat(max_stringa,stringa);
  strcat(max_stringa,"Classifica_Migliore_giocatore");
  strcat(max_stringa,".png");
        
  cairo_surface_write_to_png(surface,max_stringa);    
        
}

//------------------------------------------------------------------------------------------------
//                                            STAMPA VARIE CLASSIFICHE
//------------------------------------------------------------------------------------------------


void stampa_classifica_presenze_partite(cairo_t  *cr,giocatore *vet_punt_partite[], int cont)
{
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
    
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=30,inc=0;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+150;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Presenze");
         x=10;
         y=y+40;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
 int i;   
while(inc<cont)
        {
         p=vet_punt_partite[inc];  

         if(p->rosa==1)
         {
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
         
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         
         x=x+170;
        
        funzione_di_stampa(p->point_partite->num_partite,x,y,cr,0.0,0.0,0.0);
        x=x+30;
        cairo_move_to(cr,x,y);
        cairo_show_text(cr,"/");
        x=x+10;
        funzione_di_stampa(tot_giornate,x,y,cr,0.0,0.0,0.0);
        x=x+70;
          
          
        if(p->point_partite->punt_partite<60.00)
           {r=0.99;
            g=0.00;
            b=0.00;    
            funzione_di_stampa(p->point_partite->punt_partite,x,y,cr,r,g,b);  
           }
        else    
         {if(p->point_partite->punt_partite>59.00&&p->point_partite->punt_partite<100.00) 
                {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->point_partite->punt_partite,x,y,cr,r,g,b);  
                 }
          else  
              {if(p->point_partite->punt_partite==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->point_partite->punt_partite,x,y,cr,r,g,b);  
                 }
              }       
          }
                        
         x=10;  
         y=y+25;
         }
         inc++;
        } 
        
   salva_su_immagine_pres_partite(cr,vet_punt_partite,cont);     
                                             
}

void stampa_classifica_gol(cairo_t  *cr,giocatore *vet_punt_partite[],int cont)
{
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=30,inc=0;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+200;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Reti");
         x=10;
         y=y+40;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i,posizione=1;   
while(inc<cont)
        {
         p=vet_punt_partite[inc];  
 
         if(p->rosa==1&&strcmp(p->ruolo,"Allenatore")!=0)
         {
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(posizione,x,y,cr,0.0,0.0,0.0);
         
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+210;
        
        if(p->point_partite->gol==0)
          { cairo_set_source_rgb (cr, 0.0,0.0,0.99);
            cairo_move_to(cr,x+3,y);
            cairo_show_text(cr,"0");
          }
         else
            funzione_di_stampa(p->point_partite->gol,x,y,cr,0.0,0.0,0.99);
                        
         x=10;  
         y=y+25;
         posizione++;
         }
        inc++;
        } 
        
     salva_immagine_gol(cr,vet_punt_partite,cont);   
}

void stampa_classifica_voti(cairo_t  *cr,giocatore *vet_punt_partite[], int cont)
{
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=30,inc=0;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+150;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Media");
         x=10;
         y=y+40;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
   
   
int i;   
while(inc<cont)
        {
         p=vet_punt_partite[inc];  
      
         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
         
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+150;
        
        
       if(p->point_partite->media_voti<1)
          { cairo_set_source_rgb (cr, 0.0,0.0,0.99);
            cairo_move_to(cr,x,y);
            cairo_show_text(cr,"0");
          }
         else
            funzione_di_stampa_float(p->point_partite->media_voti,x,y,cr,0.0,0.0,0.99); 
            
        x=x+80;
          
          
          
        if(p->point_partite->punti_voti<10)
          { cairo_set_source_rgb (cr, 0.99,0.0,0.0);
            cairo_move_to(cr,x,y);
            cairo_show_text(cr,"0");
          }
       else  
        {if(p->point_partite->punti_voti<60.00)
           {r=0.99;
            g=0.00;
            b=0.00;    
            funzione_di_stampa(p->point_partite->punti_voti,x,y,cr,r,g,b);  
           }
        else    
         {if(p->point_partite->punti_voti>59.00&&p->point_partite->punti_voti<100.00) 
                {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->point_partite->punti_voti,x,y,cr,r,g,b);  
                 }
          else  
              {if(p->point_partite->punti_voti==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->point_partite->punti_voti,x,y,cr,r,g,b);  
                 }
              }       
          }}
                    
       
         x=10;  
         y=y+25;
    
         inc++;
        } 
        
     salva_immagine_voti(cr,vet_punt_partite,cont);   
}

void stampa_classifica_m_giocator(cairo_t  *cr,giocatore *vet_punt_partite[], int cont)
{
   cairo_text_extents_t te;
   cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
   cairo_select_font_face(cr,"Ubunto",CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size(cr,20);
   cairo_text_extents(cr,"a",&te);
   
   int tot_giornate=0;
   partite *q=puntatore3;

   float r,g,b;

  while(q!=0)
             {tot_giornate++;
              q=q->pross;}        

   int x=10,y=30,inc=0;
   
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"N");
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Nome");
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Cognome");
         x=x+170;
         cairo_set_source_rgb (cr, 0.0,0.0, 0.99);
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,"Punteggio");
         x=10;
         y=y+40;
   
   char s[33];
   giocatore *p;
   int numero_cont;
   
   
int i;   
while(inc<18)
        {
         p=vet_punt_partite[inc];  

         cairo_set_source_rgb (cr, 0.0,0.0, 0.0);
  
         funzione_di_stampa(inc+1,x,y,cr,0.0,0.0,0.0);
         
         x=x+70;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->nome);
         x=x+200;
         cairo_move_to(cr,x,y);
         cairo_show_text(cr,p->cognome);
         x=x+215;
                
        if(p->punti_allenam->punt_miglior_giocator<60.00)
           {r=0.99;
            g=0.00;
            b=0.00;    
            funzione_di_stampa(p->punti_allenam->punt_miglior_giocator,x,y,cr,r,g,b);  
           }
        else    
         {if(p->punti_allenam->punt_miglior_giocator>59.00&&p->punti_allenam->punt_miglior_giocator<100.00) 
                {r=0.0;
                 g=0.0;
                 b=0.99;  
                 funzione_di_stampa(p->punti_allenam->punt_miglior_giocator,x,y,cr,r,g,b);  
                 }
          else  
              {if(p->punti_allenam->punt_miglior_giocator==100) 
                 {r=0.00;
                 g=0.99;
                 b=0.00;    
                 funzione_di_stampa(p->punti_allenam->punt_miglior_giocator,x,y,cr,r,g,b);  
                 }
              }       
          }
                        
         x=10;  
         y=y+25;
         
         inc++;
        } 
        
     salva_immagine_miglior_giocatore(cr,vet_punt_partite,cont);   
}

//------------------------------------------------------------------------------------------------
//                                            CREA VARIE CLASSIFICHE
//------------------------------------------------------------------------------------------------

void stampa_classifica_pres_partite(cairo_t  *cr)
{

  int cont=0,i=0;
  giocatore *p=puntatore2;
  giocatore *q;
  
   while(p!=0)
            { 
                   cont++;
                
             p=p->pross;
            }

    giocatore *vet_punt_partite[cont];
         
    while(i<cont)
    { 
      p=puntatore2;
      while(p!=0)
               {if(controlla_prec(vet_punt_partite,i-1,p))
                   { vet_punt_partite[i]=p;
                    break;}
                 else
                    p=p->pross;
               }
     
    
     while(p!=0)
           { q=vet_punt_partite[i];

             if(p->point_partite->punt_partite>q->point_partite->punt_partite&&controlla_prec(vet_punt_partite,i-1,p))
                vet_punt_partite[i]=p;
             
             p=p->pross;
             }     
          
       i++;
    }
                      
  stampa_classifica_presenze_partite(cr,vet_punt_partite,cont);
}

void stampa_classifica_marcatori(cairo_t  *cr)
{

  int cont=0,i=0;
  giocatore *p=puntatore2;
  giocatore *q;
  
   while(p!=0)
            {
             cont++;               
             p=p->pross;
            }

    giocatore *vet_punt_partite[cont];
         
    while(i<cont)
    { p=puntatore2;
      while(p!=0)
               {if(controlla_prec(vet_punt_partite,i-1,p))
                   { vet_punt_partite[i]=p;
                    break;}
                 else
                    p=p->pross;
               }
     
    
     while(p!=0)
           { q=vet_punt_partite[i];
     
             if(p->point_partite->gol>q->point_partite->gol&&controlla_prec(vet_punt_partite,i-1,p))
                vet_punt_partite[i]=p;
             
             p=p->pross;
             }     
       i++;
    }
                           
  stampa_classifica_gol(cr,vet_punt_partite,cont);
}

void stampa_classifica_voti(cairo_t  *cr)
{

  int cont=0,i=0;
  giocatore *p=puntatore2;
  giocatore *q;
  
   while(p!=0)
            {if(p->rosa==1)
                cont++;
              
             p=p->pross;
            }


    giocatore *vet_punt_partite[15];
         
    while(i<16)
    { p=puntatore2;
     
      while(p!=0)
               { if(p->rosa==1){
                    if(controlla_prec(vet_punt_partite,i-1,p))
                        { vet_punt_partite[i]=p;
                         break;}
                     else
                        p=p->pross;
                   }
                  else
                       p=p->pross;    
               } 
     
    
       while(p!=0)
           {if(p->rosa==1){
                
                q=vet_punt_partite[i];
     
                if(p->point_partite->media_voti>q->point_partite->media_voti&&controlla_prec(vet_punt_partite,i-1,p))
                   vet_punt_partite[i]=p;
             
                 p=p->pross;
               }
            else
               p=p->pross;
           }           
           i++;  
          
    }
                           
                    
  stampa_classifica_voti(cr,vet_punt_partite,cont);
}

void stampa_classifica_migliore_giocatore(cairo_t  *cr)
{

  int cont=0,i=0;
  giocatore *p=puntatore2;
  giocatore *q;
  
   while(p!=0)
            {
                cont++;
                
             p=p->pross;
            }

    giocatore *vet_punt_partite[18];
         
    while(i<18)
    { p=puntatore2;
      while(p!=0)
               {if(controlla_prec(vet_punt_partite,i-1,p))
                   { vet_punt_partite[i]=p;
                    break;}
                 else
                    p=p->pross;
               }
     
    
     while(p!=0)
           { q=vet_punt_partite[i];
     
             if(p->punti_allenam->punt_miglior_giocator>q->punti_allenam->punt_miglior_giocator&&controlla_prec(vet_punt_partite,i-1,p))
                vet_punt_partite[i]=p;
             
             p=p->pross;
             }     
       i++;
    }
                           
  stampa_classifica_m_giocator(cr,vet_punt_partite,cont);
}

//--------------------------------------------------------------------------------------------------------

void aggiorna_num_allenamenti(int num_giocatore)
{
       giocatore *t=puntatore2;
       giornate *f;
   
    int cont,somma=0;
    float somma2;


num_giocatore=0;

while(t!=0)
           {
               punti_allenamento *q=t->punti_allenam;
               somma=0;
               cont=0;

              f=puntatore1;
               while(f!=0)
                         {
                           somma=somma+f->bottoni_selezioni[num_giocatore];
                           cont++;
                           f=f->pross;
                          }

              somma2=100.0;
              somma2=somma2/cont;

              q->num_allenamenti=somma;    
              q->punteggio=somma*somma2;
         
              num_giocatore++;
              t=t->pross;
            }
   
   salva_nel_file();
}

void calcola_punteggi_partite()
{
 
  giocatore *p=puntatore2;
  partite *q=puntatore3;
  int cont_gol,cont_pres,inc=0,cont_partite=0,cont_voti_int;
  float cont_voti=0.0;
  float somma2,somma3;
  
  while(q!=0)                 
           {cont_partite++;
            q=q->pross;
           }
             
  while(p!=0)
           {
            if(p->rosa==1){
            cont_pres=0;
            cont_voti=0;
            cont_gol=0;
            cont_voti_int=0;
            somma2=0.0;
            q=puntatore3;
            while(q!=0)                 
                      {cont_pres+=q->pres_partite[inc];
                       cont_gol+=q->gol_partite[inc];
                       if(q->voti_partite[inc]!=0)
                         {cont_voti+=q->voti_partite[inc];
                           cont_voti_int++;
                          }
                       q=q->pross;
                     }
              
            p->point_partite->num_partite=cont_pres;          
            p->point_partite->gol=cont_gol;    
    
            
            somma2=100.0;
            somma2=somma2/cont_partite;               
            p->point_partite->punt_partite=cont_pres*somma2;
            
            somma3=cont_voti/cont_voti_int;
            p->point_partite->media_voti=somma3; 
            p->point_partite->punti_voti=somma3*10;
            
            p->punti_allenam->punt_miglior_giocator=p->point_partite->punti_voti+p->punti_allenam->punteggio+p->point_partite->punt_partite;
            
            p->punti_allenam->punt_miglior_giocator=p->punti_allenam->punt_miglior_giocator/3;
            p->punti_allenam->punt_miglior_giocator=p->punti_allenam->punt_miglior_giocator+p->point_partite->gol;
            
            inc++;
            }
            else
                p->punti_allenam->punt_miglior_giocator=p->punti_allenam->punteggio/3;
            
         
          p=p->pross;
       }
           
     
  salva_nel_file();

}

void aggiungi_ins_pres_giornate(pres_allenamento *p,int num_giocatore)
{
    aggiorna_num_allenamenti(num_giocatore);
    stampa=1;
    
    GtkWidget *finestra=GTK_WIDGET(gtk_builder_get_object(builder,"drawingarea36") );
    gtk_widget_queue_draw (finestra); 
}

int contatore(int cont)
{
  giocatore *p=puntatore2;

  while(p!=0)
            {cont++;
             p=p->pross;}
 
  return cont;
}

void salva_nel_file()
{
  
    giornate *q=puntatore1;
    giocatore *p=puntatore2;

   int cont=0;

    cont=contatore(cont); 

   char vet_nomi[cont][50];

   p=puntatore2;

    char stringa[30],stringa_file[50];
 
   int intero, virgola;
   float virgola2;
   int cont2=0;
    while(p!=0)
    {
     
      strcpy(stringa,p->nome);
      strcat(stringa,"_");
      strcat(stringa,p->cognome);
      strcat(stringa,".txt");
      
      strcpy(stringa_file,"giocatori/");
      strcat(stringa_file,stringa);

      strcpy(vet_nomi[cont2],stringa_file);

        ofstream f;
        f.open(stringa_file) ;

        f<<p->nome<<endl;
        f<<p->cognome<<endl;
        f<<p->ruolo<<endl;
        f<<p->rosa<<endl;

        punti_allenamento *s=p->punti_allenam;

        f<<s->num_allenamenti<<endl;
        f<<s->punteggio<<endl;
        f<<s->punt_miglior_giocator<<endl;
        

        punti_partite *r=p->point_partite;
        
        f<<r->num_partite<<endl;
        f<<r->punt_partite<<endl;
        f<<r->gol<<endl;
        
        virgola2=0.0;  
        intero=r->media_voti;
        virgola2=r->media_voti;
        virgola2=virgola2-intero;
        virgola2=virgola2*10;
        virgola=virgola2;
        
        f<<intero<<endl;
        f<<virgola<<endl;
        
        f<<r->punti_voti<<endl;
        
       
        p=p->pross;
        cont2++;
        f.close();
    }

     ofstream s;
     s.open("date/date_allenamenti.txt") ;

     while(q!=0)
                  {
                   s<<q->giorno<<endl;
                   s<<q->giono_settimana<<endl;
                   s<<q->mese_parola<<endl;
                   s<<q->anno<<endl;
                   
                   for(int i=0;i<18;i++)
                         s<<q->bottoni_selezioni[i]<<endl;
                   
                   q=q->pross;
                  }

     s.close();
     
     ofstream s2;
     s2.open("date/date_partite.txt") ;
     
     partite *m=puntatore3;

     while(m!=0)
                  {
                   s2<<m->giorno<<endl;
                   s2<<m->mese_parola<<endl;
                   s2<<m->giono_settimana<<endl;
                   s2<<m->anno<<endl;
                   s2<<m->squadra<<endl;
                   s2<<m->palestra<<endl;
                   
                   for(int i=0;i<2;i++)
                          s2<<m->risultato[i]<<endl;
                   
                   for(int i=0;i<15;i++)
                         s2<<m->pres_partite[i]<<endl;
                   for(int i=0;i<15;i++)
                         s2<<m->gol_partite[i]<<endl;
                   for(int i=0;i<15;i++)
                         s2<<m->voti_partite[i]<<endl;            
                   
                   m=m->pross;
                  }

     s2.close();

    ofstream s1;
     s1.open("giocatori/nomi_giocatori.txt") ;

     for(int i=0;i<cont;i++)
           s1<<vet_nomi[i]<<endl;

     s1.close(); 
     
}


void carica_risultati_dal_file()
{
   
  int cont=0,i,numero;
  char var[50];

  giocatore *p=puntatore2;

   ifstream f,f1;
   f.open("giocatori/nomi_giocatori.txt") ;

   while(f>>var)
            {cont++; }  
   
    f.close();

    char vet_nomi[cont][50];

   f1.open("giocatori/nomi_giocatori.txt") ;

   for(i=0;i<cont;i++)
         f1>>vet_nomi[i];
   
    f1.close();
  
   int intero, virgola;
   float virgola2;
   i=0;
   while(i<cont)
             {
                ifstream f;
                f.open(vet_nomi[i]);
            
                giocatore *p=new giocatore();

                f>>p->nome;
                f>>p->cognome;
                f>>p->ruolo;
                f>>p->rosa;

                punti_allenamento *s=new punti_allenamento();

               f>>s->num_allenamenti;
               f>>s->punteggio;
               f>>s->punt_miglior_giocator;

               punti_partite *r=new punti_partite();
        
               f>>r->num_partite;
               f>>r->punt_partite;
               f>>r->gol;
                                           
               f>>intero;
               f>>virgola;
                 
               virgola2=0.0;  
               virgola2=virgola;
               virgola2=virgola2/10;
               virgola2=virgola2+intero;
               r->media_voti=virgola2;  
                 
               f>>r->punti_voti;
               
                  p->point_partite=r;
               
               f.close();

               p->punti_allenam=s;
               
               giocatore *q=puntatore2;
               giocatore *prec=0;   
   
               while(q!=0)
                        {prec=q;
                          q=q->pross;}

              if(puntatore2==0)
                 {
                  puntatore2=p;
                  punta_gioc_att=puntatore2;
                 }
             else
                 {
                 prec->pross=p;
                 }

                   p->precc=prec;
                   p->pross=q;  
                i++;
        }
   
   f.open("date/date_allenamenti.txt") ;
   
  cont=0;
   while(f>>var)
            {cont++; }  

   cont=cont/22;

    f.close();

   ifstream s;
   s.open("date/date_allenamenti.txt");

   for(int j=0;j<cont;j++)
          {
           giornate *q=new giornate();

           s>>q->giorno;
           s>>q->giono_settimana;
           s>>q->mese_parola;
           s>>q->anno;
           
            for(int k=0;k<18;k++)
                  s>>q->bottoni_selezioni[k];

           giornate *p_gio=puntatore1;
           giornate *prec_gio=0;  

             while(p_gio!=0)
                       {
                          prec_gio=p_gio;
                          p_gio=p_gio->pross;
                        }

            if(puntatore1==0)
              {
                puntatore1=q;
                punta_att=puntatore1; 
               }
           else
         {
           prec_gio->pross=q;
         }
         
         q->precc=prec_gio;
         q->pross=p_gio;
       }
  
      s.close();
      
   f.open("date/date_partite.txt") ;
   
  cont=0;
   while(f>>var)
            {cont++; }  

   cont=cont/53;

    f.close();

   ifstream s2;
   s2.open("date/date_partite.txt");

   for(int j=0;j<cont;j++)
          {
           partite *m=new partite();

           s2>>m->giorno;
           s2>>m->mese_parola;
           s2>>m->giono_settimana;
            s2>>m->anno;
            s2>>m->squadra;
            s2>>m->palestra;
            
            for(int i=0;i<2;i++)
                  s2>>m->risultato[i];
            
            for(int k=0;k<15;k++)
                  s2>>m->pres_partite[k];
            for(int k=0;k<15;k++)
                  s2>>m->gol_partite[k];
            for(int k=0;k<15;k++)
                  s2>>m->voti_partite[k];            

           partite *p_par=puntatore3;
           partite *prec_par=0;  

             while(p_par!=0)
                       {
                          prec_par=p_par;
                          p_par=p_par->pross;
                        }

            if(puntatore3==0)
              {
                puntatore3=m;
                punta_att_partite=puntatore3; 
               }
           else
         {
           prec_par->pross=m;
         }
         
         m->precc=prec_par;
         m->pross=p_par;
       }
  
      s2.close();
}